/*
	WeaponFEPO.h
	Focused Energy Pulse Overload
	(c)2008 Palestar Inc, Richard Lyle
*/

#ifndef WEAPONFEPO_H
#define WEAPONFEPO_H

#include "Game/Constants.h"
#include "Game/GadgetBeamWeapon.h"



//----------------------------------------------------------------------------

class WeaponFEPO : public GadgetBeamWeapon
{
public:
	DECLARE_WIDGET_CLASS();

	// NounGadget interface
	Type type() const
	{
		return WEAPON_CLOSE;
	}
	int maxDamage() const
	{
		return (6000 + (level() * 250))* enhancementModifier( enhancementSystem(), NounEnhancement::MT_DAMAGE );
	}
	int addValue() const
	{
		return 17000;
	}
	int buildTechnology() const
	{
		return 45;
	}
	int	buildCost() const
	{
		return 120;
	}
	dword buildFlags() const
	{
		return NounPlanet::FLAG_METALS;
	}
	int buildTime() const
	{
		return 405;
	}

	// GadgetWeapon interface
	int energyCost() const
	{
		return (4000 + (level() * 550))* enhancementModifier( enhancementSystem(), NounEnhancement::MT_ENERGY);
	}
	int energyCharge() const
	{
		return (17 + level())* enhancementModifier( enhancementSystem(), NounEnhancement::MT_COOLDOWN);
	}
	int damage() const
	{
		return (250 + (level() * 15))* enhancementModifier( enhancementSystem(), NounEnhancement::MT_DAMAGE );
	}
	int damageRandom() const
	{
		return (35 + (level() * 10))* enhancementModifier( enhancementSystem(), NounEnhancement::MT_DAMAGE );
	}
	int damageFalloff() const
	{
		return 0;
	}
	dword damageType() const
	{
		return DAMAGE_ENERGY;
	}
	int duration() const
	{
		return 60;
	}
	float length() const
	{
		return (150.0f + (level() * 5.0f))* enhancementModifier( enhancementSystem(), NounEnhancement::MT_RANGE );
	}
	int repairRate() const
	{
		return 4;
	}
};



#endif

//----------------------------------------------------------------------------
//EOF
